Expand description
inquire is a library for building interactive prompts on terminals.
It provides several different prompts in order to interactively ask the user
for information via the CLI. With inquire, you can use:
Textto get text input from the user, with built-in autocompletion support;Editor* to get longer text inputs by opening a text editor for the user;DateSelect* to get a date input from the user, selected via an interactive calendar;Selectto ask the user to select one option from a given list;MultiSelectto ask the user to select an arbitrary number of options from a given list;Confirmfor simple yes/no confirmation prompts;CustomTypefor text prompts that you would like to parse to a custom type, such as numbers or UUIDs;Passwordfor secretive text prompts.
Check out the GitHub repository to see demos of what you can do with inquire.
Features
- Cross-platform, supporting UNIX and Windows terminals (thanks to crossterm);
- Several kinds of prompts to suit your needs;
- Standardized error handling (thanks to thiserror);
- Support for fine-grained configuration for each prompt type, allowing you to customize:
- Default values;
- Input validators and formatters;
- Help messages;
- Autocompletion for
Textprompts; - Custom list filters for Select and
MultiSelectprompts; - Custom parsers for
ConfirmandCustomTypeprompts; - Custom extensions for files created by
Editorprompts; - and many others!
* Date-related features are available by enabling the date feature.
Simple Example
use inquire::{Text, validator::{StringValidator, Validation}};
fn main() {
let validator = |input: &str| if input.chars().count() > 140 {
Ok(Validation::Invalid("You're only allowed 140 characters.".into()))
} else {
Ok(Validation::Valid)
};
let status = Text::new("What are you thinking about?")
.with_validator(validator)
.prompt();
match status {
Ok(status) => println!("Your status is being published..."),
Err(err) => println!("Error while publishing your status: {}", err),
}
}Re-exports
pub use crate::autocompletion::Autocomplete;pub use crate::error::CustomUserError;pub use crate::error::InquireError;
Modules
- Trait and structs used by prompts to provide autocompletion features.
- Definitions of
inquire’s error handling - Type aliases and default implementations for functions called as formatters of a given input.
- Utilities used to wrap user selections in Select and
MultiSelectprompts. - Type aliases and default implementations for parsers called in prompts that need to parse user input, such as Confirm or
CustomType. - General type aliases.
- UI-related definitions for rendered content.
- Traits and structs used by prompts to validate user input before returning the values to their callers.
Macros
- Shorthand for the built-in
ExactLengthValidatorthat checks whether the answer length is equal to the specified value. - Shorthand for the built-in
MaxLengthValidatorthat checks whether the answer length is smaller than or equal to the specified threshold. - Shorthand for the built-in
MinLengthValidatorthat checks whether the answer length is larger than or equal to the specified threshold. - Built-in parser creator that checks whether the answer is able to be successfully parsed to a given type, such as
f64. The given type must implement the FromStr trait. - Shorthand for the built-in
ValueRequiredValidatorthat checks whether the answer is not empty.
Structs
- Prompt to ask the user for simple yes/no questions, commonly known by asking the user displaying the
(y/n)text. - Generic prompt suitable for when you need to parse the user input into a specific type, for example an
f64or arust_decimal, maybe even anuuid. - Prompt that allows user to select a date (time not supported) from an interactive calendar. Available via the
datefeature. - This prompt is meant for cases where you need the user to write some text that might not fit in a single line, such as long descriptions or commit messages.
- Prompt suitable for when you need the user to select many options (including none if applicable) among a list of them.
- Prompt meant for secretive text inputs.
- Prompt suitable for when you need the user to select one option among many.
- Standard text prompt that returns the user string input.
Enums
- Display modes of the text input of a password prompt.
Functions
- Acquires a write lock to the global RenderConfig object and updates the inner value with the provided argument.